ইভেন্ট হ্যান্ডলিং

Microsoft Technologies - সি শার্প (C#) - উইন্ডোজ ফর্ম এবং GUI প্রোগ্রামিং | NCTB BOOK

সি# এ ইভেন্ট হ্যান্ডলিং একটি গুরুত্বপূর্ণ কনসেপ্ট, যা ইন্টারঅ্যাকটিভ প্রোগ্রাম তৈরি করতে ব্যবহৃত হয়। ইভেন্ট হ্যান্ডলিং এমন একটি প্রক্রিয়া, যেখানে নির্দিষ্ট কোনো ঘটনার (Event) প্রতিক্রিয়া জানাতে কোড লেখা হয়। উদাহরণস্বরূপ, একটি বাটন ক্লিক হলে, একটি টেক্সটবক্সে লেখা হলে, বা একটি মাউস মুভ হলে ইভেন্ট হ্যান্ডলিং করা হয়।

ইভেন্ট হ্যান্ডলিং কিভাবে কাজ করে?

সি# এ ইভেন্ট হ্যান্ডলিং এর প্রধান উপাদানগুলো হলো:

  1. Event Publisher: যে অবজেক্টে ইভেন্ট তৈরি হয়। উদাহরণস্বরূপ, একটি Button ক্লাস যেখানে Click ইভেন্ট রয়েছে।
  2. Event Subscriber: যে অবজেক্ট ইভেন্টটি গ্রহণ করে এবং তার প্রতিক্রিয়া জানায়।

ইভেন্ট সাবস্ক্রাইব করতে ডেলিগেট ব্যবহার করা হয় এবং এক্ষেত্রে EventHandler ডেলিগেটটি সবচেয়ে বেশি ব্যবহৃত হয়।


ইভেন্ট হ্যান্ডলিং উদাহরণ: একটি বাটন ক্লিক ইভেন্ট

নিচে একটি বাটন ক্লিক ইভেন্ট হ্যান্ডলিং এর উদাহরণ দেওয়া হলো।

ধাপ ১: উইন্ডোজ ফর্মে একটি Button এবং Label যোগ করা

১. Visual Studio তে একটি Windows Forms App প্রজেক্ট তৈরি করুন। ২. ফর্মে একটি Button এবং একটি Label যোগ করুন। ৩. Button এর Text প্রপার্টি "Click Me!" দিন এবং Label এর Text প্রপার্টি ফাঁকা রাখুন।

ধাপ ২: ইভেন্ট হ্যান্ডলার তৈরি করা

Button এ ডাবল ক্লিক করলে একটি ইভেন্ট হ্যান্ডলার তৈরি হবে, যা বাটন ক্লিক করার সময় ট্রিগার হবে।

private void button1_Click(object sender, EventArgs e)
{
    label1.Text = "Button was clicked!";
}

ব্যাখ্যা

  • button1_Click হলো ইভেন্ট হ্যান্ডলার, যা তখনই ট্রিগার হবে যখন button1 ক্লিক করা হবে।
  • label1.Text = "Button was clicked!"; এর মাধ্যমে লেবেল এ "Button was clicked!" মেসেজ প্রদর্শন করা হয়েছে।

ইভেন্ট হ্যান্ডলিং এর কাঠামো

ইভেন্ট হ্যান্ডলিংয়ের জন্য সাধারণ কাঠামো হলো:

private void <Event_Handler_Name>(object sender, EventArgs e)
{
    // ইভেন্ট হ্যান্ডল করার কোড
}
  • sender: যে অবজেক্ট থেকে ইভেন্টটি এসেছে (যেমন: Button)।
  • EventArgs e: ইভেন্ট সম্পর্কিত অতিরিক্ত তথ্য (যদি থাকে)।

কাস্টম ইভেন্ট তৈরি করা

সি# এ নিজস্ব ইভেন্ট বা কাস্টম ইভেন্টও তৈরি করা যায়, যেখানে আপনি নিজের নির্দিষ্ট ইভেন্ট ডেফাইন করতে পারেন।

using System;

public class Publisher
{
    // ডেলিগেট ডিক্লেয়ার করা
    public delegate void MyEventHandler(object sender, EventArgs e);

    // ইভেন্ট ডিক্লেয়ার করা
    public event MyEventHandler MyEvent;

    public void RaiseEvent()
    {
        if (MyEvent != null)
        {
            MyEvent(this, EventArgs.Empty);
        }
    }
}

public class Subscriber
{
    public void OnEventOccurred(object sender, EventArgs e)
    {
        Console.WriteLine("Event occurred!");
    }
}

public class Program
{
    public static void Main()
    {
        Publisher pub = new Publisher();
        Subscriber sub = new Subscriber();

        // ইভেন্ট সাবস্ক্রাইব করা
        pub.MyEvent += sub.OnEventOccurred;

        // ইভেন্ট রেইজ করা
        pub.RaiseEvent();
    }
}

ব্যাখ্যা

  1. Publisher ক্লাসে একটি কাস্টম ডেলিগেট এবং ইভেন্ট ডিক্লেয়ার করা হয়েছে।
  2. RaiseEvent মেথডে ইভেন্ট ট্রিগার করা হয়।
  3. Subscriber ক্লাসে ইভেন্ট হ্যান্ডলার তৈরি করা হয়েছে।
  4. pub.MyEvent += sub.OnEventOccurred; এর মাধ্যমে ইভেন্ট সাবস্ক্রাইব করা হয়েছে, অর্থাৎ OnEventOccurred মেথডটি ইভেন্ট হ্যান্ডলার হিসেবে কাজ করবে।
  5. pub.RaiseEvent(); দ্বারা ইভেন্ট রেইজ করা হয়েছে এবং আউটপুটে "Event occurred!" প্রদর্শিত হবে।

ইভেন্টের ধরন

সি# এ কিছু সাধারণ ইভেন্ট রয়েছে, যা প্রায়শই ব্যবহার করা হয়:

  • Click: বাটন ক্লিক করার সময় ঘটে।
  • TextChanged: টেক্সট পরিবর্তন হলে ট্রিগার হয়।
  • MouseEnter / MouseLeave: মাউস কোনো কন্ট্রোলে প্রবেশ করলে বা ছেড়ে গেলে ঘটে।
  • KeyPress: কোনো কী চাপলে ইভেন্ট ঘটে।

একটি পূর্ণাঙ্গ উদাহরণ

এই উদাহরণে আমরা একটি TextBox এবং একটি Label ব্যবহার করব। যখন TextBox এ কিছু লেখা হবে, তখনই Label এ সেই লেখা প্রদর্শিত হবে।

ধাপ ১: TextBox এবং Label যোগ করা

১. উইন্ডোজ ফর্মে একটি TextBox এবং একটি Label যোগ করুন। ২. Label এর Text প্রপার্টি ফাঁকা রাখুন।

ধাপ ২: TextBox এর TextChanged ইভেন্টে কোড লেখা

TextBox এ ডাবল ক্লিক করলে এর TextChanged ইভেন্ট তৈরি হবে এবং সেখানে নিচের কোডটি লিখুন:

private void textBox1_TextChanged(object sender, EventArgs e)
{
    label1.Text = textBox1.Text;
}

ব্যাখ্যা

  • textBox1_TextChanged ইভেন্ট হ্যান্ডলারটি TextBox এর প্রতিটি পরিবর্তনের সাথে সাথে ট্রিগার হবে।
  • label1.Text = textBox1.Text; এর মাধ্যমে TextBox এর লেখাকে Label এ দেখানো হবে।

সংক্ষেপে ইভেন্ট হ্যান্ডলিং

  • ইভেন্ট হ্যান্ডলিং: ইভেন্টের ঘটনার প্রতিক্রিয়া জানাতে কোড লেখার প্রক্রিয়া।
  • ইভেন্ট হ্যান্ডলার: ইভেন্ট ঘটলে যে মেথড কল হয়।
  • Event Publisher: ইভেন্ট তৈরি করে এমন অবজেক্ট, যেমন Button, TextBox ইত্যাদি।
  • Event Subscriber: ইভেন্টের ঘটনার প্রতিক্রিয়া জানায়, অর্থাৎ ইভেন্ট হ্যান্ডলার।

সি# এ ইভেন্ট হ্যান্ডলিং এর মাধ্যমে ইন্টারঅ্যাকটিভ প্রোগ্রাম তৈরি করা সহজ হয়, যেখানে ব্যবহারকারীর অ্যাকশনের উপর ভিত্তি করে ইভেন্ট হ্যান্ডলার কাজ করে।

Content added By
Promotion